Extract velo matrices and gene info from adata

python3 ../src/pull_velo_info.py

R load

suppressPackageStartupMessages({
    library("tidyverse")
    library("reticulate")
    library("ggplot2")
    library("SingleCellExperiment")
    library("scater")
    library("Seurat")
    library("SeuratDisk")
    library("zellkonverter")
})
# load('~/data/chick_miruna/08052021.RData')
# save just combined to reduce load time from Miruna's entire environment
# save(combined, file = '~/data/chick_miruna/combined_mgg_08052021.Rdata' )
load('~/data/chick_miruna/combined_mgg_08052021.Rdata')
combined
An object of class Seurat 
20555 features across 17295 samples within 2 assays 
Active assay: RNA (18555 features, 0 variable features)
 1 other assay present: integrated
 2 dimensional reductions calculated: pca, umap
color_palette <- pals::glasbey()[1:14]
names(color_palette) <- seq(0,13, 1)

Build Labelled Matrix

Plots

genes <- c("NTRK3", "REEP5", "RBP3", "THRB", "MEIS2", "PRDM1", "ONECUT1", "TOX3", "SIX6", "OTX2", "FGFR3",  "TFAP2E")
for (i in genes){
  print( velo_scale_df %>% filter(Gene == i) %>%  ggplot(aes(x=UMAP_1, y = UMAP_2, color = Velocity)) + 
           geom_point(size = 0.3) +  
           cowplot::theme_cowplot() + scale_color_gradient2(
             low = "green", 
             high = "blue", 
             mid = 'gray'
           ) + 
           facet_wrap(~cluster.condition) + 
           ggtitle(i)
  )
}

devtools::session_info()
─ Session info ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 setting  value
 version  R version 4.1.2 (2021-11-01)
 os       macOS Catalina 10.15.7
 system   x86_64, darwin17.0
 ui       RStudio
 language (EN)
 collate  en_US.UTF-8
 ctype    en_US.UTF-8
 tz       America/New_York
 date     2022-05-16
 rstudio  2021.09.0+351 Ghost Orchid (desktop)
 pandoc   2.14.0.3 @ /Applications/RStudio.app/Contents/MacOS/pandoc/ (via rmarkdown)

─ Packages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 ! package              * version    date (UTC) lib source
 P abind                  1.4-5      2016-07-21 [?] CRAN (R 4.1.0)
 P assertthat             0.2.1      2019-03-21 [?] CRAN (R 4.1.0)
 P backports              1.4.1      2021-12-13 [?] CRAN (R 4.1.0)
   basilisk               1.6.0      2021-10-26 [1] Bioconductor
   basilisk.utils         1.6.0      2021-10-26 [1] Bioconductor
 P beachmat               2.10.0     2021-10-26 [?] Bioconductor
 P beeswarm               0.4.0      2021-06-01 [?] CRAN (R 4.1.0)
 P Biobase              * 2.54.0     2021-10-26 [?] Bioconductor
 P BiocGenerics         * 0.40.0     2021-10-26 [?] Bioconductor
 P BiocManager            1.30.16    2021-06-15 [?] CRAN (R 4.1.0)
 P BiocNeighbors          1.12.0     2021-10-26 [?] Bioconductor
 P BiocParallel           1.28.3     2021-12-09 [?] Bioconductor
 P BiocSingular           1.10.0     2021-10-26 [?] Bioconductor
 P bit                    4.0.4      2020-08-04 [?] CRAN (R 4.1.0)
 P bit64                  4.0.5      2020-08-30 [?] CRAN (R 4.1.0)
 P bitops                 1.0-7      2021-04-24 [?] CRAN (R 4.1.0)
   brio                   1.1.3      2021-11-30 [2] CRAN (R 4.1.0)
 P broom                  0.7.12     2022-01-28 [?] CRAN (R 4.1.2)
 P bslib                  0.3.1      2021-10-06 [?] CRAN (R 4.1.0)
 P cachem                 1.0.6      2021-08-19 [?] CRAN (R 4.1.0)
 P callr                  3.7.0      2021-04-20 [?] CRAN (R 4.1.0)
 P cellranger             1.1.0      2016-07-27 [?] CRAN (R 4.1.0)
 P cli                    3.1.1      2022-01-20 [?] CRAN (R 4.1.2)
 P clipr                  0.7.1      2020-10-08 [?] CRAN (R 4.1.0)
 P cluster                2.1.2      2021-04-17 [?] CRAN (R 4.1.0)
 P codetools              0.2-18     2020-11-04 [?] CRAN (R 4.1.0)
 P colorspace             2.0-2      2021-06-24 [?] CRAN (R 4.1.0)
 P cowplot                1.1.1      2020-12-30 [?] CRAN (R 4.1.0)
 P crayon                 1.4.2      2021-10-29 [?] CRAN (R 4.1.0)
 P data.table             1.14.2     2021-09-27 [?] CRAN (R 4.1.0)
   datapasta              3.1.0      2020-01-17 [2] CRAN (R 4.1.0)
 P DBI                    1.1.2      2021-12-20 [?] CRAN (R 4.1.0)
 P dbplyr                 2.1.1      2021-04-06 [?] CRAN (R 4.1.0)
 P DelayedArray           0.20.0     2021-10-26 [?] Bioconductor
 P DelayedMatrixStats     1.16.0     2021-10-26 [?] Bioconductor
 P deldir                 1.0-6      2021-10-23 [?] CRAN (R 4.1.0)
   desc                   1.4.0      2021-09-28 [2] CRAN (R 4.1.0)
   devtools               2.4.3      2021-11-30 [2] CRAN (R 4.1.0)
 P dichromat              2.0-0      2013-01-24 [?] CRAN (R 4.1.0)
 P digest                 0.6.29     2021-12-01 [?] CRAN (R 4.1.0)
   dir.expiry             1.2.0      2021-10-26 [1] Bioconductor
 P dplyr                * 1.0.7      2021-06-18 [?] CRAN (R 4.1.0)
 P DT                     0.20       2021-11-15 [?] CRAN (R 4.1.0)
 P ellipsis               0.3.2      2021-04-29 [?] CRAN (R 4.1.0)
 P evaluate               0.14       2019-05-28 [?] CRAN (R 4.1.0)
 P fansi                  1.0.2      2022-01-14 [?] CRAN (R 4.1.2)
 P farver                 2.1.0      2021-02-28 [?] CRAN (R 4.1.0)
 P fastmap                1.1.0      2021-01-25 [?] CRAN (R 4.1.0)
   filelock               1.0.2      2018-10-05 [1] CRAN (R 4.1.0)
 P fitdistrplus           1.1-6      2021-09-28 [?] CRAN (R 4.1.0)
 P forcats              * 0.5.1      2021-01-27 [?] CRAN (R 4.1.0)
 P fs                     1.5.2      2021-12-08 [?] CRAN (R 4.1.0)
 P future                 1.23.0     2021-10-31 [?] CRAN (R 4.1.0)
 P future.apply           1.8.1      2021-08-10 [?] CRAN (R 4.1.0)
 P generics               0.1.2      2022-01-31 [?] CRAN (R 4.1.2)
 P GenomeInfoDb         * 1.30.1     2022-01-30 [?] Bioconductor
 P GenomeInfoDbData       1.2.7      2022-02-03 [?] Bioconductor
 P GenomicRanges        * 1.46.1     2021-11-18 [?] Bioconductor
 P ggbeeswarm             0.6.0      2017-08-07 [?] CRAN (R 4.1.0)
 P ggplot2              * 3.3.5      2021-06-25 [?] CRAN (R 4.1.0)
 P ggrepel                0.9.1      2021-01-15 [?] CRAN (R 4.1.0)
 P ggridges               0.5.3      2021-01-08 [?] CRAN (R 4.1.0)
 P globals                0.14.0     2020-11-22 [?] CRAN (R 4.1.0)
 P glue                   1.6.1      2022-01-22 [?] CRAN (R 4.1.2)
 P goftest                1.2-3      2021-10-07 [?] CRAN (R 4.1.0)
 P gridExtra              2.3        2017-09-09 [?] CRAN (R 4.1.0)
 P gtable                 0.3.0      2019-03-25 [?] CRAN (R 4.1.0)
 P haven                  2.4.3      2021-08-04 [?] CRAN (R 4.1.0)
   hdf5r                  1.3.5      2021-11-15 [1] CRAN (R 4.1.0)
 P hms                    1.1.1      2021-09-26 [?] CRAN (R 4.1.0)
 P htmltools              0.5.2      2021-08-25 [?] CRAN (R 4.1.0)
 P htmlwidgets            1.5.4      2021-09-08 [?] CRAN (R 4.1.0)
 P httpuv                 1.6.5      2022-01-05 [?] CRAN (R 4.1.2)
 P httr                   1.4.2      2020-07-20 [?] CRAN (R 4.1.0)
 P ica                    1.0-2      2018-05-24 [?] CRAN (R 4.1.0)
 P igraph                 1.2.11     2022-01-04 [?] CRAN (R 4.1.2)
 P IRanges              * 2.28.0     2021-10-26 [?] Bioconductor
 P irlba                  2.3.5      2021-12-06 [?] CRAN (R 4.1.0)
 P jquerylib              0.1.4      2021-04-26 [?] CRAN (R 4.1.0)
 P jsonlite               1.7.3      2022-01-17 [?] CRAN (R 4.1.2)
 P KernSmooth             2.23-20    2021-05-03 [?] CRAN (R 4.1.0)
 P knitr                  1.37       2021-12-16 [?] CRAN (R 4.1.0)
 P labeling               0.4.2      2020-10-20 [?] CRAN (R 4.1.0)
 P later                  1.3.0      2021-08-18 [?] CRAN (R 4.1.0)
 P lattice                0.20-45    2021-09-22 [?] CRAN (R 4.1.2)
 P lazyeval               0.2.2      2019-03-15 [?] CRAN (R 4.1.0)
 P leiden                 0.3.9      2021-07-27 [?] CRAN (R 4.1.0)
 P lifecycle              1.0.1      2021-09-24 [?] CRAN (R 4.1.0)
 P listenv                0.8.0      2019-12-05 [?] CRAN (R 4.1.0)
 P lmtest                 0.9-39     2021-11-07 [?] CRAN (R 4.1.0)
 P lubridate              1.8.0      2021-10-07 [?] CRAN (R 4.1.0)
 P magrittr               2.0.2      2022-01-26 [?] CRAN (R 4.1.2)
 P mapproj                1.2.8      2022-01-12 [?] CRAN (R 4.1.2)
 P maps                   3.4.0      2021-09-25 [?] CRAN (R 4.1.0)
 P MASS                   7.3-55     2022-01-13 [?] CRAN (R 4.1.2)
 P Matrix                 1.4-0      2021-12-08 [?] CRAN (R 4.1.0)
 P MatrixGenerics       * 1.6.0      2021-10-26 [?] Bioconductor
 P matrixStats          * 0.61.0     2021-09-17 [?] CRAN (R 4.1.0)
   memoise                2.0.1      2021-11-26 [2] CRAN (R 4.1.0)
 P mgcv                   1.8-38     2021-10-06 [?] CRAN (R 4.1.0)
 P mime                   0.12       2021-09-28 [?] CRAN (R 4.1.0)
 P miniUI                 0.1.1.1    2018-05-18 [?] CRAN (R 4.1.0)
 P modelr                 0.1.8      2020-05-19 [?] CRAN (R 4.1.0)
 P munsell                0.5.0      2018-06-12 [?] CRAN (R 4.1.0)
 P nlme                   3.1-155    2022-01-13 [?] CRAN (R 4.1.2)
 P pals                   1.7        2021-04-17 [?] CRAN (R 4.1.0)
 P parallelly             1.30.0     2021-12-17 [?] CRAN (R 4.1.0)
 P patchwork              1.1.1      2020-12-17 [?] CRAN (R 4.1.0)
 P pbapply                1.5-0      2021-09-16 [?] CRAN (R 4.1.0)
 P pillar                 1.7.0      2022-02-01 [?] CRAN (R 4.1.2)
   pkgbuild               1.3.1      2021-12-20 [2] CRAN (R 4.1.0)
 P pkgconfig              2.0.3      2019-09-22 [?] CRAN (R 4.1.0)
   pkgload                1.2.4      2021-11-30 [2] CRAN (R 4.1.0)
 P plotly                 4.10.0     2021-10-09 [?] CRAN (R 4.1.0)
 P plyr                   1.8.6      2020-03-03 [?] CRAN (R 4.1.0)
 P png                    0.1-7      2013-12-03 [?] CRAN (R 4.1.0)
 P polyclip               1.10-0     2019-03-14 [?] CRAN (R 4.1.0)
 P prettyunits            1.1.1      2020-01-24 [?] CRAN (R 4.1.0)
 P processx               3.5.2      2021-04-30 [?] CRAN (R 4.1.0)
 P promises               1.2.0.1    2021-02-11 [?] CRAN (R 4.1.0)
 P ps                     1.6.0      2021-02-28 [?] CRAN (R 4.1.0)
 P purrr                * 0.3.4      2020-04-17 [?] CRAN (R 4.1.0)
 P R6                     2.5.1      2021-08-19 [?] CRAN (R 4.1.0)
 P RANN                   2.6.1      2019-01-08 [?] CRAN (R 4.1.0)
 P RColorBrewer           1.1-2      2014-12-07 [?] CRAN (R 4.1.0)
 P Rcpp                   1.0.8      2022-01-13 [?] CRAN (R 4.1.2)
 P RcppAnnoy              0.0.19     2021-07-30 [?] CRAN (R 4.1.0)
 P RCurl                  1.98-1.5   2021-09-17 [?] CRAN (R 4.1.0)
 P readr                * 2.1.2      2022-01-30 [?] CRAN (R 4.1.2)
 P readxl                 1.3.1      2019-03-13 [?] CRAN (R 4.1.0)
 P remotes                2.4.2      2021-11-30 [?] CRAN (R 4.1.0)
 P renv                   0.15.2     2022-01-24 [?] CRAN (R 4.1.2)
 P reprex                 2.0.1      2021-08-05 [?] CRAN (R 4.1.0)
 P reshape2               1.4.4      2020-04-09 [?] CRAN (R 4.1.0)
 P reticulate           * 1.24       2022-01-26 [?] CRAN (R 4.1.2)
 P rlang                  1.0.1      2022-02-03 [?] CRAN (R 4.1.2)
 P rmarkdown              2.11       2021-09-14 [?] CRAN (R 4.1.0)
 P ROCR                   1.0-11     2020-05-02 [?] CRAN (R 4.1.0)
 P rpart                  4.1.16     2022-01-24 [?] CRAN (R 4.1.2)
 P rprojroot              2.0.2      2020-11-15 [?] CRAN (R 4.1.0)
 P rstudioapi             0.13       2020-11-12 [?] CRAN (R 4.1.0)
 P rsvd                   1.0.5      2021-04-16 [?] CRAN (R 4.1.0)
 P Rtsne                  0.15       2018-11-10 [?] CRAN (R 4.1.0)
 P rvest                  1.0.2      2021-10-16 [?] CRAN (R 4.1.0)
 P S4Vectors            * 0.32.3     2021-11-21 [?] Bioconductor
 P sass                   0.4.0      2021-05-12 [?] CRAN (R 4.1.0)
 P ScaledMatrix           1.2.0      2021-10-26 [?] Bioconductor
 P scales                 1.1.1      2020-05-11 [?] CRAN (R 4.1.0)
 P scater               * 1.22.0     2021-10-26 [?] Bioconductor
 P scattermore            0.7        2020-11-24 [?] CRAN (R 4.1.0)
 P sctransform            0.3.3      2022-01-13 [?] CRAN (R 4.1.2)
 P scuttle              * 1.4.0      2021-10-26 [?] Bioconductor
   sessioninfo            1.2.2      2021-12-06 [2] CRAN (R 4.1.0)
 P Seurat               * 4.1.0      2022-01-14 [?] CRAN (R 4.1.2)
   SeuratDisk           * 0.0.0.9019 2022-02-03 [1] Github (mojaveazure/seurat-disk@163f1aa)
 P SeuratObject         * 4.0.4      2021-11-23 [?] CRAN (R 4.1.0)
 P shiny                  1.7.1      2021-10-02 [?] CRAN (R 4.1.0)
 P SingleCellExperiment * 1.16.0     2021-10-26 [?] Bioconductor
 P sparseMatrixStats      1.6.0      2021-10-26 [?] Bioconductor
 P spatstat.core          2.3-2      2021-11-26 [?] CRAN (R 4.1.0)
 P spatstat.data          2.1-2      2021-12-17 [?] CRAN (R 4.1.0)
 P spatstat.geom          2.3-1      2021-12-10 [?] CRAN (R 4.1.0)
 P spatstat.sparse        2.1-0      2021-12-17 [?] CRAN (R 4.1.0)
 P spatstat.utils         2.3-0      2021-12-12 [?] CRAN (R 4.1.0)
 P stringi                1.7.6      2021-11-29 [?] CRAN (R 4.1.0)
 P stringr              * 1.4.0      2019-02-10 [?] CRAN (R 4.1.0)
 P SummarizedExperiment * 1.24.0     2021-10-26 [?] Bioconductor
 P survival               3.2-13     2021-08-24 [?] CRAN (R 4.1.0)
 P tensor                 1.5        2012-05-05 [?] CRAN (R 4.1.0)
   testthat               3.1.2      2022-01-20 [2] CRAN (R 4.1.2)
 P tibble               * 3.1.6      2021-11-07 [?] CRAN (R 4.1.0)
 P tidyr                * 1.2.0      2022-02-01 [?] CRAN (R 4.1.2)
 P tidyselect             1.1.1      2021-04-30 [?] CRAN (R 4.1.0)
 P tidyverse            * 1.3.1      2021-04-15 [?] CRAN (R 4.1.0)
 P tzdb                   0.2.0      2021-10-27 [?] CRAN (R 4.1.0)
   usethis                2.1.5      2021-12-09 [2] CRAN (R 4.1.0)
 P utf8                   1.2.2      2021-07-24 [?] CRAN (R 4.1.0)
 P uwot                   0.1.11     2021-12-02 [?] CRAN (R 4.1.0)
 P vctrs                  0.3.8      2021-04-29 [?] CRAN (R 4.1.0)
 P vipor                  0.4.5      2017-03-22 [?] CRAN (R 4.1.0)
 P viridis                0.6.2      2021-10-13 [?] CRAN (R 4.1.0)
 P viridisLite            0.4.0      2021-04-13 [?] CRAN (R 4.1.0)
 P vroom                  1.5.7      2021-11-30 [?] CRAN (R 4.1.0)
 P withr                  2.4.3      2021-11-30 [?] CRAN (R 4.1.0)
 P xfun                   0.29       2021-12-14 [?] CRAN (R 4.1.0)
 P xml2                   1.3.3      2021-11-30 [?] CRAN (R 4.1.0)
 P xtable                 1.8-4      2019-04-21 [?] CRAN (R 4.1.0)
 P XVector                0.34.0     2021-10-26 [?] Bioconductor
 P yaml                   2.2.2      2022-01-25 [?] CRAN (R 4.1.2)
   zellkonverter        * 1.5.0      2022-02-03 [1] Github (theislab/zellkonverter@40e85a1)
 P zlibbioc               1.40.0     2021-10-26 [?] Bioconductor
 P zoo                    1.8-9      2021-03-09 [?] CRAN (R 4.1.0)

 [1] /Users/mcgaugheyd/git/chick_analysis_collab/renv/library/R-4.1/x86_64-apple-darwin17.0
 [2] /Library/Frameworks/R.framework/Versions/4.1/Resources/library

 P ── Loaded and on-disk path mismatch.

─ Python configuration ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 python:         /Users/mcgaugheyd/git/chick_analysis_collab/renv/python/virtualenvs/renv-python-3.9/bin/python
 libpython:      /usr/local/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9/config-3.9-darwin/libpython3.9.dylib
 pythonhome:     /Users/mcgaugheyd/git/chick_analysis_collab/renv/python/virtualenvs/renv-python-3.9:/Users/mcgaugheyd/git/chick_analysis_collab/renv/python/virtualenvs/renv-python-3.9
 version:        3.9.4 (default, Apr  5 2021, 01:49:30)  [Clang 12.0.0 (clang-1200.0.32.29)]
 numpy:          /Users/mcgaugheyd/git/chick_analysis_collab/renv/python/virtualenvs/renv-python-3.9/lib/python3.9/site-packages/numpy
 numpy_version:  1.21.5
 
 NOTE: Python version was forced by RETICULATE_PYTHON

────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
LS0tCnRpdGxlOiAiTWlydW5hIEdUIENoaWNrIFZlbG9jaXR5IEN1c3RvbSBQbG90dGluZyIKYXV0aG9yOiBEYXZpZCBNY0dhdWdoZXkKZGF0ZTogMjAyMi0wNS0xNgpvdXRwdXQ6IAogIGh0bWxfbm90ZWJvb2s6CiAgICB0aGVtZTogdW5pdGVkCi0tLQoKCiMgRXh0cmFjdCB2ZWxvIG1hdHJpY2VzIGFuZCBnZW5lIGluZm8gZnJvbSBhZGF0YQpgYGB7YmFzaH0KcHl0aG9uMyAuLi9zcmMvcHVsbF92ZWxvX2luZm8ucHkKYGBgCgojIFIgbG9hZApgYGB7cn0Kc3VwcHJlc3NQYWNrYWdlU3RhcnR1cE1lc3NhZ2VzKHsKICBsaWJyYXJ5KCJ0aWR5dmVyc2UiKQogIGxpYnJhcnkoInJldGljdWxhdGUiKQogIGxpYnJhcnkoImdncGxvdDIiKQogIGxpYnJhcnkoIlNpbmdsZUNlbGxFeHBlcmltZW50IikKICBsaWJyYXJ5KCJzY2F0ZXIiKQogIGxpYnJhcnkoIlNldXJhdCIpCiAgbGlicmFyeSgiU2V1cmF0RGlzayIpCiAgbGlicmFyeSgiemVsbGtvbnZlcnRlciIpCn0pCiMgbG9hZCgnfi9kYXRhL2NoaWNrX21pcnVuYS8wODA1MjAyMS5SRGF0YScpCiMgc2F2ZSBqdXN0IGNvbWJpbmVkIHRvIHJlZHVjZSBsb2FkIHRpbWUgZnJvbSBNaXJ1bmEncyBlbnRpcmUgZW52aXJvbm1lbnQKIyBzYXZlKGNvbWJpbmVkLCBmaWxlID0gJ34vZGF0YS9jaGlja19taXJ1bmEvY29tYmluZWRfbWdnXzA4MDUyMDIxLlJkYXRhJyApCmxvYWQoJ34vZGF0YS9jaGlja19taXJ1bmEvY29tYmluZWRfbWdnXzA4MDUyMDIxLlJkYXRhJykKY29tYmluZWQKCmNvbG9yX3BhbGV0dGUgPC0gcGFsczo6Z2xhc2JleSgpWzE6MTRdCm5hbWVzKGNvbG9yX3BhbGV0dGUpIDwtIHNlcSgwLDEzLCAxKQpgYGAKCgojIEJ1aWxkIExhYmVsbGVkIE1hdHJpeApgYGB7cn0KbGlicmFyeSh0aWR5dmVyc2UpCgptYWtlX3ZlbG9fYmMgPC0gZnVuY3Rpb24ocHJlZml4ID0gJy4uL2RhdGEvbTAwOF9zY1ZlbG8nKXsKICB2ZWxvIDwtIHJlYWRfY3N2KGdsdWU6OmdsdWUoJ3twcmVmaXh9LnZlbG8uY3N2JykpCiAgZ2VuZSA8LSByZWFkX2NzdihnbHVlOjpnbHVlKCd7cHJlZml4fS52ZWxvZ2VuZXMuY3N2JykpCiAgCiAgZ2VuZV9pZHggPC0gY29sbmFtZXModmVsb1ssLTFdKSAlPiUgYXMuaW50ZWdlcigpCiAgY29sbmFtZXModmVsbylbMjpuY29sKHZlbG8pXSA8LSBnZW5lICU+JSBtdXRhdGUoaWR4ID0gcm93X251bWJlcigpIC0gMSkgJT4lIGZpbHRlcihpZHggJWluJSBnZW5lX2lkeCkgJT4lIHB1bGwoMSkKICAKICBvYnMgPC0gcmVhZF9jc3YoZ2x1ZTo6Z2x1ZSgne3ByZWZpeH0ub2JzLmNzdicpKQogIAogIGJjX3ZlbG8gPC0gY2JpbmQob2JzWywxXSwgdmVsb1ssLTFdKQogIGNvbG5hbWVzKGJjX3ZlbG8pWzFdIDwtICdCYXJjb2RlJwogIGJjX3ZlbG8KfQoKbTAwNl92ZWxvIDwtIG1ha2VfdmVsb19iYygnLi4vZGF0YS9tMDA2X3NjVmVsbycpCm0wMDdfdmVsbyA8LSBtYWtlX3ZlbG9fYmMoJy4uL2RhdGEvbTAwN19zY1ZlbG8nKQptMDA4X3ZlbG8gPC0gbWFrZV92ZWxvX2JjKCcuLi9kYXRhL20wMDhfc2NWZWxvJykKCnZlbG9fcGFuIDwtIGZ1bmN0aW9uKGdlbmUpewogIG0wMDYgPC0gbTAwNl92ZWxvWyxjKCdCYXJjb2RlJywgZ2VuZSldICU+JSAKICAgIGxlZnRfam9pbihjb21iaW5lZEByZWR1Y3Rpb25zJHVtYXBAY2VsbC5lbWJlZGRpbmdzICU+JSBhc190aWJibGUocm93bmFtZXMgPSAnQmFyY29kZScpLCBieSA9ICJCYXJjb2RlIikgJT4lIAogICAgbGVmdF9qb2luKGNvbWJpbmVkQG1ldGEuZGF0YSAlPiUgYXNfdGliYmxlKHJvd25hbWVzID0gJ0JhcmNvZGUnKSAlPiUgc2VsZWN0KEJhcmNvZGUsIGNsdXN0ZXIuY29uZGl0aW9uKSwgYnkgPSAiQmFyY29kZSIpCiAgbTAwNyA8LSBtMDA3X3ZlbG9bLGMoJ0JhcmNvZGUnLCBnZW5lKV0gJT4lIAogICAgbGVmdF9qb2luKGNvbWJpbmVkQHJlZHVjdGlvbnMkdW1hcEBjZWxsLmVtYmVkZGluZ3MgJT4lIGFzX3RpYmJsZShyb3duYW1lcyA9ICdCYXJjb2RlJyksIGJ5ID0gIkJhcmNvZGUiKSAlPiUgCiAgICBsZWZ0X2pvaW4oY29tYmluZWRAbWV0YS5kYXRhICU+JSBhc190aWJibGUocm93bmFtZXMgPSAnQmFyY29kZScpICU+JSBzZWxlY3QoQmFyY29kZSwgY2x1c3Rlci5jb25kaXRpb24pLCBieSA9ICJCYXJjb2RlIikKICBtMDA4IDwtIG0wMDhfdmVsb1ssYygnQmFyY29kZScsIGdlbmUpXSAlPiUgCiAgICBsZWZ0X2pvaW4oY29tYmluZWRAcmVkdWN0aW9ucyR1bWFwQGNlbGwuZW1iZWRkaW5ncyAlPiUgYXNfdGliYmxlKHJvd25hbWVzID0gJ0JhcmNvZGUnKSwgYnkgPSAiQmFyY29kZSIpICU+JSAKICAgIGxlZnRfam9pbihjb21iaW5lZEBtZXRhLmRhdGEgJT4lIGFzX3RpYmJsZShyb3duYW1lcyA9ICdCYXJjb2RlJykgJT4lIHNlbGVjdChCYXJjb2RlLCBjbHVzdGVyLmNvbmRpdGlvbiksIGJ5ID0gIkJhcmNvZGUiKQogIG91dCA8LSBiaW5kX3Jvd3MobTAwNiwgbTAwNywgbTAwOCkKICBjb2xuYW1lcyhvdXQpWzJdIDwtICJWZWxvY2l0eSIKICBvdXQKfQoKdmVsb19zY2FsZSA8LSBmdW5jdGlvbigpewogICMgeiBzY2FsZXMgdGhlIHZlbG9jaXR5IHBlciBzYW1wbGUKICAjIGFuZCByZXR1cm5zIGEgaHVnZSB0aWR5IHRpYmJsZQogIG0wMDZfbCA8LSBtMDA2X3ZlbG8gJT4lIHBpdm90X2xvbmdlcigtQmFyY29kZSkgJT4lIAogICAgbXV0YXRlKHZhbHVlID0gc2NhbGUodmFsdWUpKSAlPiUgCiAgICBsZWZ0X2pvaW4oY29tYmluZWRAcmVkdWN0aW9ucyR1bWFwQGNlbGwuZW1iZWRkaW5ncyAlPiUgYXNfdGliYmxlKHJvd25hbWVzID0gJ0JhcmNvZGUnKSwgYnkgPSAiQmFyY29kZSIpICU+JSAKICAgIGxlZnRfam9pbihjb21iaW5lZEBtZXRhLmRhdGEgJT4lIGFzX3RpYmJsZShyb3duYW1lcyA9ICdCYXJjb2RlJykgJT4lIHNlbGVjdChCYXJjb2RlLCBjbHVzdGVyLmNvbmRpdGlvbiksIGJ5ID0gIkJhcmNvZGUiKQogIG0wMDdfbCA8LSAgbTAwN192ZWxvICU+JSBwaXZvdF9sb25nZXIoLUJhcmNvZGUpICU+JSAKICAgIG11dGF0ZSh2YWx1ZSA9IHNjYWxlKHZhbHVlKSkgJT4lIAogICAgbGVmdF9qb2luKGNvbWJpbmVkQHJlZHVjdGlvbnMkdW1hcEBjZWxsLmVtYmVkZGluZ3MgJT4lIGFzX3RpYmJsZShyb3duYW1lcyA9ICdCYXJjb2RlJyksIGJ5ID0gIkJhcmNvZGUiKSAlPiUgCiAgICBsZWZ0X2pvaW4oY29tYmluZWRAbWV0YS5kYXRhICU+JSBhc190aWJibGUocm93bmFtZXMgPSAnQmFyY29kZScpICU+JSBzZWxlY3QoQmFyY29kZSwgY2x1c3Rlci5jb25kaXRpb24pLCBieSA9ICJCYXJjb2RlIikKICBtMDA4X2wgPC0gbTAwOF92ZWxvICU+JSBwaXZvdF9sb25nZXIoLUJhcmNvZGUpICU+JSAKICAgIG11dGF0ZSh2YWx1ZSA9IHNjYWxlKHZhbHVlKSkgJT4lIAogICAgbGVmdF9qb2luKGNvbWJpbmVkQHJlZHVjdGlvbnMkdW1hcEBjZWxsLmVtYmVkZGluZ3MgJT4lIGFzX3RpYmJsZShyb3duYW1lcyA9ICdCYXJjb2RlJyksIGJ5ID0gIkJhcmNvZGUiKSAlPiUgCiAgICBsZWZ0X2pvaW4oY29tYmluZWRAbWV0YS5kYXRhICU+JSBhc190aWJibGUocm93bmFtZXMgPSAnQmFyY29kZScpICU+JSBzZWxlY3QoQmFyY29kZSwgY2x1c3Rlci5jb25kaXRpb24pLCBieSA9ICJCYXJjb2RlIikKICBvdXQgPC0gYmluZF9yb3dzKG0wMDZfbCwgbTAwN19sLCBtMDA4X2wpICU+JSBkYXRhLmZyYW1lKCkKICBjb2xuYW1lcyhvdXQpW2MoMiwzKV0gPC0gYygiR2VuZSIsICJWZWxvY2l0eSIpCiAgb3V0IAp9CnZlbG9fc2NhbGVfZGYgPC0gdmVsb19zY2FsZSgpCmBgYAoKCiMgUGxvdHMKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5oZWlnaHQgPSAyfQpnZW5lcyA8LSBjKCJOVFJLMyIsICJSRUVQNSIsICJSQlAzIiwgIlRIUkIiLCAiTUVJUzIiLCAiUFJETTEiLCAiT05FQ1VUMSIsICJUT1gzIiwgIlNJWDYiLCAiT1RYMiIsICJGR0ZSMyIsICAiVEZBUDJFIikKZm9yIChpIGluIGdlbmVzKXsKICBwcmludCggdmVsb19zY2FsZV9kZiAlPiUgZmlsdGVyKEdlbmUgPT0gaSkgJT4lICBnZ3Bsb3QoYWVzKHg9VU1BUF8xLCB5ID0gVU1BUF8yLCBjb2xvciA9IFZlbG9jaXR5KSkgKyAKICAgICAgICAgICBnZW9tX3BvaW50KHNpemUgPSAwLjMpICsgIAogICAgICAgICAgIGNvd3Bsb3Q6OnRoZW1lX2Nvd3Bsb3QoKSArIHNjYWxlX2NvbG9yX2dyYWRpZW50MigKICAgICAgICAgICAgIGxvdyA9ICJncmVlbiIsIAogICAgICAgICAgICAgaGlnaCA9ICJibHVlIiwgCiAgICAgICAgICAgICBtaWQgPSAnZ3JheScKICAgICAgICAgICApICsgCiAgICAgICAgICAgZmFjZXRfd3JhcCh+Y2x1c3Rlci5jb25kaXRpb24pICsgCiAgICAgICAgICAgZ2d0aXRsZShpKQogICkKfQpgYGAKCgpgYGB7cn0KZGV2dG9vbHM6OnNlc3Npb25faW5mbygpCmBgYAo=